CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์คํ์ผ ๊ตฌ์ฑ์ ๊ฐ์ ํ๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ์ธ์. ๋ณต์กํ ์น ํ๋ก์ ํธ์์ ์คํ์ผ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ธ์.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ๋ง์คํฐํ๊ธฐ: ๋ณต์กํ ์น์ฌ์ดํธ๋ฅผ ์ํ ์คํ์ผ ์ฐ์ ์์ ์ง์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ๋ ๋ณต์กํด์ง์ ๋ฐ๋ผ CSS ์คํ์ผ์ํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ง๋ณด์์ฑ๊ณผ ์ฑ๋ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. CSS ์บ์ค์ผ์ด๋ ๋ฐ ์์ ๋ ๋ฒจ 5(CSS Cascading and Inheritance Level 5)์ ๋์ ๋ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์คํ์ผ์ ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ง์ ํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ๋ช ์๋ ์ถฉ๋ ๋ฐ ์คํ์ผ์ํธ ๋น๋ํ์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๊ธฐ๋ณธ ์ฌํญ์ ์ดํด๋ณด๊ณ , ์ค์ ๊ตฌํ ์๋๋ฆฌ์ค๋ฅผ ์์ฐํ๋ฉฐ, ํ๋ก์ ํธ์์ ๊ทธ ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
CSS ์บ์ค์ผ์ด๋์ ๋ช ์๋ ์ดํดํ๊ธฐ
์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๋ํด ์์๋ณด๊ธฐ ์ ์ CSS ์บ์ค์ผ์ด๋์ ๋ช ์๋์ ํต์ฌ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์บ์ค์ผ์ด๋๋ ์ฌ๋ฌ ๊ท์น์ด ๋์ผํ ์์ฑ์ ๋์์ผ๋ก ํ ๋ ์ด๋ค ์คํ์ผ ๊ท์น์ด ์์์ ์ ์ฉ๋ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์์ธ์ด ์บ์ค์ผ์ด๋ ์์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
- ์ถ์ฒ(Origin): ์คํ์ผ ๊ท์น์ด ์ด๋์ ๋น๋กฏ๋์๋์ง (์: ์ฌ์ฉ์ ์์ด์ ํธ ์คํ์ผ์ํธ, ์ฌ์ฉ์ ์คํ์ผ์ํธ, ์ ์์ ์คํ์ผ์ํธ).
- ๋ช ์๋(Specificity): ์ ํ์์ ๊ตฌ์ฑ ์์(์: ID, ํด๋์ค, ์์)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ์์ ํ ๋น๋ ๊ฐ์ค์น.
- ์ ์ธ ์์(Order of appearance): ์คํ์ผ์ํธ์์ ์คํ์ผ ๊ท์น์ด ์ ์๋ ์์.
๋ช ์๋๋ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐ ์ค์ํ ์์์ ๋๋ค. ๋ช ์๋ ๊ฐ์ด ๋์ ์ ํ์๋ ๋ฎ์ ๊ฐ์ ๊ฐ์ง ์ ํ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ๋ช ์๋ ๊ณ์ธต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค(๊ฐ์ฅ ๋ฎ์ ๊ฒ๋ถํฐ ๊ฐ์ฅ ๋์ ์์ผ๋ก):
- ์ ์ฒด ์ ํ์(*), ์กฐํฉ์(+, >, ~, ' ') ๋ฐ ๋ถ์ ์์ฌ ํด๋์ค(:not()) (๋ช ์๋ = 0,0,0,0)
- ํ์ ์ ํ์(์์ ์ด๋ฆ), ์์ฌ ์์(::before, ::after) (๋ช ์๋ = 0,0,0,1)
- ํด๋์ค ์ ํ์(.class), ์์ฑ ์ ํ์([attribute]), ์์ฌ ํด๋์ค(:hover, :focus) (๋ช ์๋ = 0,0,1,0)
- ID ์ ํ์(#id) (๋ช ์๋ = 0,1,0,0)
- ์ธ๋ผ์ธ ์คํ์ผ(style="...") (๋ช ์๋ = 1,0,0,0)
- !important ๊ท์น (์ ํญ๋ชฉ ์ค ํ๋์ ๋ช ์๋๋ฅผ ์์ ํจ)
๋ช ์๋๋ ๊ฐ๋ ฅํ์ง๋ง, ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ผ๋ฉฐ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์คํ์ผ์ ์ฌ์ ์ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๊ฐ ๋์์ด ๋ฉ๋๋ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ์๊ฐ: ์๋ก์ด ์คํ์ผ ๊ด๋ฆฌ ์ ๊ทผ๋ฒ
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์บ์ค์ผ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ก์ด ์ฐจ์์ ๋์ ํ์ฌ ๊ด๋ จ ์คํ์ผ์ ์ด๋ฆ์ด ์ง์ ๋ ๋ ์ด์ด๋ก ๊ทธ๋ฃนํํ๊ณ ์ฐ์ ์์๋ฅผ ์ ์ดํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ช ์๋ ๊ผผ์๋ !important ์ ์ธ์ ๋ํ ์์กด๋๋ฅผ ์ค์ฌ ์คํ์ผ์ ๊ด๋ฆฌํ๋ ๋ ๊ตฌ์กฐํ๋๊ณ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์บ์ค์ผ์ด๋ ๋ ์ด์ด ์ ์ธํ๊ธฐ
@layer at-rule์ ์ฌ์ฉํ์ฌ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
@layer layer-name;
@layer layer-name1, layer-name2, layer-name3;
ํ๋์ @layer ๊ท์น์ ์ฌ๋ฌ ๋ ์ด์ด๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ ์ธํ ์ ์์ต๋๋ค. ๋ ์ด์ด๋ฅผ ์ ์ธํ๋ ์์๊ฐ ์ด๊ธฐ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋จผ์ ์ ์ธ๋ ๋ ์ด์ด๋ ๋์ค์ ์ ์ธ๋ ๋ ์ด์ด๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ์ต๋๋ค.
์บ์ค์ผ์ด๋ ๋ ์ด์ด ์ฑ์ฐ๊ธฐ
๋ ์ด์ด๋ฅผ ์ ์ธํ ํ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์คํ์ผ์ ์ฑ์ธ ์ ์์ต๋๋ค:
- ๋ช ์์ ์ผ๋ก: ์คํ์ผ ๊ท์น์ ๋ ์ด์ด ์ด๋ฆ์ ์ง์ ํ์ฌ.
- ์์์ ์ผ๋ก:
@layer๋ธ๋ก ๋ด์ ์คํ์ผ ๊ท์น์ ์ค์ฒฉํ์ฌ.
๋ช ์์ ๋ ์ด์ด ํ ๋น:
@layer reset;
@layer theme;
@layer components;
@layer utilities;
.element {
color: black; /* ๊ธฐ๋ณธ ์์ */
}
@layer theme {
.element {
color: blue;
}
}
.element {
color: green; /* 'theme' ๋ ์ด์ด ์์์ ์ฌ์ ์ํ์ง ์์ */
}
@layer components {
.element {
color: red;
}
}
์ด ์์ ์์ reset ๋ ์ด์ด ๋ด์ ์คํ์ผ์ ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ทธ ๋ค์์ผ๋ก theme, components, utilities ์์
๋๋ค. ์ฐ์ ์์๊ฐ ๋์ ๋ ์ด์ด์ ์คํ์ผ ๊ท์น์ด ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ ์ด์ด์ ๊ท์น๊ณผ ์ถฉ๋ํ๋ฉด, ์ฐ์ ์์๊ฐ ๋์ ๊ท์น์ด ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.
์์์ ๋ ์ด์ด ํ ๋น:
@layer reset {
body {
margin: 0;
padding: 0;
}
}
@layer theme {
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}
}
์ด ๊ตฌ๋ฌธ์ ๊ด๋ จ ์คํ์ผ์ ๋ ์ด์ด ๋ด์ ๊ทธ๋ฃนํํ๋ ๋ ๊น๋ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
์บ์ค์ผ์ด๋ ๋ ์ด์ด ์์ ๋ณ๊ฒฝํ๊ธฐ
๋ ์ด์ด ์ ์ธ์ ์ด๊ธฐ ์์๊ฐ ๊ธฐ๋ณธ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ํ์ง๋ง ๋ ์ด์ด ์ด๋ฆ ๋ชฉ๋ก๊ณผ ํจ๊ป @layer at-rule์ ์ฌ์ฉํ์ฌ ๋ ์ด์ด ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค:
@layer theme, components, utilities, reset;
์ด ์์ ์์๋ ์ฒ์์ ์ ์ธ๋์๋ reset ๋ ์ด์ด๊ฐ ๋ชฉ๋ก์ ๋์ผ๋ก ์ด๋ํ์ฌ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ์ค์ ์ฌ์ฉ ์ฌ๋ก
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์คํ์ผ ์ถฉ๋์ ๊ด๋ฆฌํ๊ณ ์ผ๊ด๋ ๋์์ธ ์์คํ ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ ์๋๋ฆฌ์ค์์ ํนํ ์ ์ฉํฉ๋๋ค. ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ๋ฆฌ์ ์คํ์ผ
๋ฆฌ์ ์คํ์ผ์ํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ์ ๋ถ์ผ์น๋ฅผ ์ ์ํํ๊ณ ํ๋ก์ ํธ๋ฅผ ์ํ ๊นจ๋ํ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๋ฆฌ์ ์คํ์ผ์ ์ ์ฉ ๋ ์ด์ด์ ๋ฐฐ์นํ๋ฉด ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ฒ ๋์ด ๋ค๋ฅธ ์คํ์ผ์ด ์ฝ๊ฒ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
@layer reset {
/* ๋ฆฌ์
์คํ์ผ์ ์ฌ๊ธฐ์ ์์ฑ */
body {
margin: 0;
padding: 0;
font: inherit;
}
}
์์: Normalize.css๋ ๋ ์ต์ํ์ CSS ๋ฆฌ์ ๊ณผ ๊ฐ์ ๋ง์ CSS ๋ฆฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ๋ฆฌ์ ๋ ์ด์ด ์์ ๋ฐฐ์นํ๋ฉด, ์ปดํฌ๋ํธ ์์ค์ ์คํ์ผ์ ๋ฐฉํด๊ฐ ๋ ์ ์๋ ๋์ ๋ช ์๋ ์์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ผ๊ด๋ ์คํ์ผ๋ง์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
2. ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์๋ํํฐ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: Bootstrap, Materialize)๋ฅผ ํตํฉํ ๋, ์ข ์ข ๋์์ธ์ ๋ง๊ฒ ์คํ์ผ์ ์ฌ์ฉ์ ์ ์ํด์ผ ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํ์ผ์ ๋ณ๋์ ๋ ์ด์ด์ ๋ฐฐ์นํ๋ฉด ์ฐ์ ์์๊ฐ ๋ ๋์ ๋ ์ด์ด์์ ์์ ์ ์คํ์ผ๋ก ์ฝ๊ฒ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
@layer third-party {
/* ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์คํ์ผ์ ์ฌ๊ธฐ์ ์์ฑ */
.bootstrap-button {
/* ๋ถํธ์คํธ๋ฉ ๋ฒํผ ์คํ์ผ */
}
}
@layer components {
/* ์ปดํฌ๋ํธ ์คํ์ผ */
.my-button {
/* ์ฌ์ฉ์ ์ ์ ๋ฒํผ ์คํ์ผ */
}
}
์์: ํน์ ์์ ๊ตฌ์ฑํ๋ฅผ ๊ฐ์ง ๋ ์ง ์ ํ๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํฉํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ CSS๋ฅผ "datepicker" ๋ ์ด์ด์ ๋ฐฐ์นํ๋ฉด !important์ ์์กดํ์ง ์๊ณ "theme" ๋ ์ด์ด์์ ๊ธฐ๋ณธ ์์์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
3. ํ ๋ง
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ํ ๋ง๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ด์์ ์ ๋๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ ์ด์ด์ ๊ธฐ๋ณธ ํ ๋ง๋ฅผ ์ ์ํ ๋ค์, ์ฐ์ ์์๊ฐ ๋์ ๋ ์ด์ด์์ ๋ณํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ์ด์ด ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ง์ผ๋ก ํ ๋ง๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
@layer base-theme {
/* ๊ธฐ๋ณธ ํ
๋ง ์คํ์ผ */
body {
background-color: #fff;
color: #000;
}
}
@layer dark-theme {
/* ๋คํฌ ํ
๋ง ์คํ์ผ */
body {
background-color: #000;
color: #fff;
}
}
์์: ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ๋ฎ ์๊ฐ ๋ธ๋ผ์ฐ์ง์ ์ํ "๋ผ์ดํธ" ํ ๋ง์ ์ผ๊ฐ ์์ฒญ์ ์ํ "๋คํฌ" ํ ๋ง๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ง ๊ฐ ์ ํ์ด ๋ ์ด์ด ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ํ์ ์ผ๋ก ํ์ฑํ/๋นํ์ฑํํ๋ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
4. ์ปดํฌ๋ํธ ์คํ์ผ
์ปดํฌ๋ํธ๋ณ ์คํ์ผ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑํ๋ฉด ๋ชจ๋์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค. ๊ฐ ์ปดํฌ๋ํธ๋ ์์ฒด ๋ ์ด์ด๋ฅผ ๊ฐ์ง ์ ์์ด ํด๋น ์คํ์ผ์ ๊ฒฉ๋ฆฌํ๊ณ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
@layer button {
/* ๋ฒํผ ์คํ์ผ */
.button {
/* ๋ฒํผ ์คํ์ผ */
}
}
@layer input {
/* ์ธํ ์คํ์ผ */
.input {
/* ์ธํ ์คํ์ผ */
}
}
์์: ๋ณต์กํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ์ด์ด๋งํจ์ผ๋ก์จ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. "modal" ๋ ์ด์ด, "dropdown" ๋ ์ด์ด, "table" ๋ ์ด์ด๋ ๊ฐ๊ฐ ํด๋น ์ปดํฌ๋ํธ์ ๋ํ ํน์ ์คํ์ผ์ ํฌํจํ์ฌ ์ฝ๋ ๊ตฌ์ฑ์ ๊ฐ์ ํ๊ณ ์ ์ฌ์ ์ถฉ๋์ ์ค์ผ ์ ์์ต๋๋ค.
5. ์ ํธ๋ฆฌํฐ ํด๋์ค
์ ํธ๋ฆฌํฐ ํด๋์ค(์: .margin-top-10, .text-center)๋ ๊ณตํต ์คํ์ผ์ ์ ์ฉํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ์ฐ์ ์์๊ฐ ๋์ ๋ ์ด์ด์ ๋ฐฐ์นํ๋ฉด ํ์ํ ๋ ์ปดํฌ๋ํธ๋ณ ์คํ์ผ์ ์ฝ๊ฒ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
@layer utilities {
/* ์ ํธ๋ฆฌํฐ ํด๋์ค */
.margin-top-10 {
margin-top: 10px !important; /* ์ด ๋ ์ด์ด์์๋ !important ์ฌ์ฉ์ด ํ์ฉ๋ ์ ์์ */
}
.text-center {
text-align: center;
}
}
์์: ์ ํธ๋ฆฌํฐ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ์ปดํฌ๋ํธ ์คํ์ผ์ ์์ ํ์ง ์๊ณ ๋ ๋ ์ด์์์ ๋น ๋ฅด๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ์ CSS๋ฅผ ํธ์งํ ํ์ ์์ด ๋ณดํต ์ผ์ชฝ ์ ๋ ฌ๋ ๋ฒํผ์ ์ค์์ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ๋ ์ด์ด ๊ตฌ์กฐ ๊ณํํ๊ธฐ: ์คํ์ผ ์์ฑ์ ์์ํ๊ธฐ ์ ์ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ์ ์คํ๊ฒ ๊ณํํ์ญ์์ค. ํ๋ก์ ํธ์ ๋ค์ํ ์คํ์ผ ๋ฒ์ฃผ์ ์ด๋ค์ด ์๋ก ์ด๋ป๊ฒ ๊ด๋ จ๋๋์ง ๊ณ ๋ คํ์ญ์์ค.
- ๋ ผ๋ฆฌ์ ์ธ ์์๋ก ๋ ์ด์ด ์ ์ธํ๊ธฐ: ์ฐ์ ์์๋ฅผ ๋ฐ์ํ๋ ์์๋ก ๋ ์ด์ด๋ฅผ ์ ์ธํ์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์ ์คํ์ผ์ ๋จผ์ ์ ์ธํ๊ณ , ๊ทธ ๋ค์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ ๋ง, ์ปดํฌ๋ํธ ์คํ์ผ, ์ ํธ๋ฆฌํฐ ํด๋์ค ์์ผ๋ก ์ ์ธํด์ผ ํฉ๋๋ค.
- ์ค๋ช ์ ์ธ ๋ ์ด์ด ์ด๋ฆ ์ฌ์ฉํ๊ธฐ: ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด๋ ๋ ์ด์ด ์ด๋ฆ์ ์ ํํ์ญ์์ค. ์ด๋ ์คํ์ผ์ํธ์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ๊ฒ์ ๋๋ค.
- !important ์ ์ธ ํผํ๊ธฐ (์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ์ ์ธ): ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋
!important์ ์ธ์ ํ์์ฑ์ ์ค์ฌ์ผ ํฉ๋๋ค. ๋๋ฌผ๊ฒ ์ฌ์ฉํ๊ณ , ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ ์ด์ด์ ์คํ์ผ์ ์ฌ์ ์ํ๊ธฐ ์ํด ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ์ญ์์ค. ์ ํธ๋ฆฌํฐ ๋ ์ด์ด ๋ด์์๋!important๊ฐ ๋ ํ์ฉ๋ ์ ์์ง๋ง ์ฌ์ ํ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. - ๋ ์ด์ด ๊ตฌ์กฐ ๋ฌธ์ํํ๊ธฐ: ๋ ์ด์ด ๊ตฌ์กฐ์ ๊ฐ ๋ ์ด์ด์ ๋ชฉ์ ์ ๋ฌธ์ํํ์ญ์์ค. ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋น์ ์ ์ ๊ทผ ๋ฐฉ์์ ์ดํดํ๊ณ ์คํ์ผ์ํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ง๋ณด์ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- ๋ ์ด์ด ๊ตฌํ ํ ์คํธํ๊ธฐ: ์คํ์ผ์ด ์์๋๋ก ์ ์ฉ๋๊ณ ์๊ธฐ์น ์์ ์ถฉ๋์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ ์ด์ด ๊ตฌํ์ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค.
๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
์ค์ฒฉ๋ ๋ ์ด์ด
์ผ๋ฐ์ ์ผ๋ก ์ด๊ธฐ ์ฌ์ฉ์๋ ๊ถ์ฅ๋์ง ์์ง๋ง, ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ค์ฒฉํ์ฌ ๋ ๋ณต์กํ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์คํ์ผ ์ฐ์ ์์๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ฒฉ๋ ๋ ์ด์ด๋ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํฌ ์๋ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํ์ญ์์ค.
@layer framework {
@layer components {
/* ํ๋ ์์ํฌ ์ปดํฌ๋ํธ ์คํ์ผ */
}
@layer utilities {
/* ํ๋ ์์ํฌ ์ ํธ๋ฆฌํฐ ํด๋์ค */
}
}
์ต๋ช ๋ ์ด์ด
๋ ์ด์ด์ ๋ช
์์ ์ผ๋ก ํ ๋นํ์ง ์๊ณ ์คํ์ผ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์คํ์ผ์ ์ต๋ช
๋ ์ด์ด์ ์์ฃผํฉ๋๋ค. ์ต๋ช
๋ ์ด์ด๋ @layer ๊ท์น์ ์ฌ์ฉํ์ฌ ๋ ์ด์ด ์์๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ํ ์ ์ธ๋ ๋ชจ๋ ๋ ์ด์ด๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ์ด๋ ํญ์ ์ฐ์ ์ ์ฉ๋์ด์ผ ํ๋ ์คํ์ผ์ ์ ์ฉํ๋ ๋ฐ ์ ์ฉํ ์ ์์ง๋ง, ๋ ์ด์ด ์์คํ
์ ์์ธก ๊ฐ๋ฅ์ฑ์ ํผ์ํ ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ๋ธ๋ผ์ฐ์ ์ง์์ด ์ํธํ์ง๋ง, ํธํ์ฑ ํ๋ฅผ ํ์ธํ๊ณ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ ๋์ฒด ๋ฐฉ์์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ธฐ๋ฅ ์ฟผ๋ฆฌ(@supports)๋ฅผ ์ฌ์ฉํ์ฌ ์บ์ค์ผ์ด๋ ๋ ์ด์ด ์ง์์ ๊ฐ์งํ๊ณ ํ์ํ ๊ฒฝ์ฐ ๋์ฒด ์คํ์ผ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์ ํ์์ !important ์ ์ธ์ ํ์์ฑ์ ์ค์ฌ ์ ์ฌ์ ์ผ๋ก ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๋์น๊ฒ ๊น๊ฑฐ๋ ๋ณต์กํ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ง ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์คํ์ผ์ํธ๋ฅผ ํ๋กํ์ผ๋งํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ์ต์ ํํ์ญ์์ค.
๊ตญ์ ํ(i18n) ๋ฐ ํ์งํ(l10n) ๊ณ ๋ ค ์ฌํญ
์ ์ธ๊ณ ๊ณ ๊ฐ์ ์ํ ์น์ฌ์ดํธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋, ์บ์ค์ผ์ด๋ ๋ ์ด์ด๊ฐ ๊ตญ์ ํ ๋ฐ ํ์งํ์ ์ด๋ป๊ฒ ์ํฅ์ ๋ฏธ์น ์ ์๋์ง ๊ณ ๋ คํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ธ์ด๋ณ ์คํ์ผ์ด๋ ์ฌ์ฉ์ ๋ก์บ์ ๋ฐ๋ผ ์คํ์ผ์ ์ฌ์ ์ํ๊ธฐ ์ํ ๋ณ๋์ ๋ ์ด์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์: ์น์ฌ์ดํธ์๋ "default" ๋ ์ด์ด์ ๊ธฐ๋ณธ ์คํ์ผ์ํธ๊ฐ ์๊ณ , ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ํ ์ถ๊ฐ ๋ ์ด์ด๊ฐ ์์ ์ ์์ต๋๋ค. "arabic" ๋ ์ด์ด์๋ ์๋์ด ์คํฌ๋ฆฝํธ์ ๋ํ ํ ์คํธ ์ ๋ ฌ ๋ฐ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ์คํ์ผ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
์ ๊ทผ์ฑ(a11y) ๊ณ ๋ ค ์ฌํญ
์บ์ค์ผ์ด๋ ๋ ์ด์ด ์ฌ์ฉ์ด ์ ๊ทผ์ฑ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์คํฌ๋ฆฐ ๋ฆฌ๋ ๋ฐ ๊ธฐํ ๋ณด์กฐ ๊ธฐ์ ์ ์ค์ํ ์คํ์ผ์ด ์ฐ์ ์์๊ฐ ๋ฎ์ ๋ ์ด์ด์ ์ํด ๋ถ์ฃผ์ํ๊ฒ ์ฌ์ ์๋์ง ์๋๋ก ํ์ญ์์ค. ๋ณด์กฐ ๊ธฐ์ ๋ก ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ์ฌ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํ์ญ์์ค.
๊ฒฐ๋ก
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ๋ณต์กํ ์น ํ๋ก์ ํธ์์ ์คํ์ผ์ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์คํ์ผ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ ์ดํจ์ผ๋ก์จ ๋ช ์๋ ์ถฉ๋์ ์ค์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ฉฐ, ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์คํ์ผ์ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๊ธฐ๋ณธ ์ฌํญ์ ์ดํดํ๊ณ , ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ํ๋ฉฐ, ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฆ์ผ๋ก์จ ์ด ๊ธฐ๋ฅ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ๊ณ ์ ์ธ๊ณ ๊ณ ๊ฐ์ ์ํ ๋ ์ข๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ํต์ฌ์ ๊ฐ ๊ฐ๋ณ ํ๋ก์ ํธ์ ๋ง๊ฒ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ์ ์ ํ๊ฒ ๊ณํํ๋ ๊ฒ์ ๋๋ค.